home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1988-08-16 | 3.0 KB | 102 lines |
- IMPLEMENTATION MODULE KermServ;
- (************************************************************************)
- (* Handle Server mode *)
- (* written: 14.12.85 Matthias Aebi *)
- (* last modification: 18.03.86 Matthias Aebi *)
- (************************************************************************)
-
- FROM Terminal IMPORT WriteString, Write, WriteLn;
- FROM String IMPORT Insert;
- FROM KermRecv IMPORT RecvPacket, SwitchRecv;
- FROM KermSend IMPORT SendPacket, SwitchSend;
- FROM KermParam IMPORT Packet;
- FROM KermMisc IMPORT ClrScr;
- FROM NameSearch IMPORT FindNames, NextName;
-
- CONST
- UpLowEqual = TRUE;
-
-
- (************************************************************************)
- PROCEDURE Server(): BOOLEAN;
- (************************************************************************)
- VAR
- fileName : ARRAY [0..31] OF CHAR;
- recvPack : Packet;
- typ : CHAR;
- num : CARDINAL;
- len : CARDINAL;
- dummy : BOOLEAN;
- foundOne : BOOLEAN;
- fileNo : CARDINAL;
- versionNo : CARDINAL;
- count : CARDINAL;
-
- BEGIN
- WriteLn;
- WriteLn;
- WriteString("Now entering server mode ...");
-
- count := 3;
-
- LOOP
- RecvPacket(typ,num,len,recvPack);
- CASE typ OF
- "S": (* receive a file *)
- dummy := SwitchRecv(""); |
-
- "R": (* request to send a file *)
- recvPack[len] := 0C; (* the name has no terminating 0C *)
- FindNames("DK", recvPack, UpLowEqual);
- NextName(foundOne, fileName, fileNo, versionNo);
- Insert(fileName, 0, "DK."); (* add device name *)
-
- IF foundOne
- THEN
- dummy := SwitchSend(fileName,"");
- ELSE
- SendPacket("E",0,26,"File not found (M2-Kermit)");
- END; |
-
- "G": (* Execute generic Kermit command *)
- CASE CAP(recvPack[0]) OF
- "F": (* exit server mode & return to command level *)
- SendPacket("Y",0,0,""); (* send an ACK for Packet 0 *)
- ClrScr;
- RETURN FALSE; |
-
- "L": (* exit server mode & exit kermit *)
- SendPacket("Y",0,0,""); (* send an ACK for Packet 0 *)
- ClrScr;
- RETURN TRUE; |
-
- ELSE
- SendPacket("E",0,43,
- "Generic command not implemented (M2-Kermit)");
- END; |
-
- "T": (* timeout *)
- INC(count);
- IF count > 3
- THEN
- count := 0;
- SendPacket("N",0,0,""); (* send a NAK for Packet 0 *)
- END; |
-
- "A": (* user abort *)
- SendPacket("E",0,37,
- "User aborted transmission (M2-Kermit)");
- ClrScr;
- RETURN FALSE;
-
- ELSE
- SendPacket("E",0,42,
- "Server command not implemented (M2-Kermit)");
-
- END;
- END;
-
- END Server;
-
- END KermServ.
-